package controlador;

import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import beans.AperturaMesaBean;
import beans.MesaBean;
import beans.MozoBean;
import rmi.InterfazRemotaRest;
import rmi.ModeloRemoto;
import service.AperturaMesaSrv;
import service.MesaSrv;

public class AperturaMesa {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private static AperturaMesa instancia = null;
	
	public static AperturaMesa getInstancia() {
		if(instancia == null) {
			instancia = new AperturaMesa();
		}
		return instancia;
	}
	/**
	 * 
	 * @param cantComensales
	 * @param mesas
	 * @param mozo
	 */
	public void abrirMesa( 
						Integer cantComensales, 
						List<MesaBean> mesas, 
						MozoBean mozo) {
		
		AperturaMesaBean nuevaApertura = new AperturaMesaBean();
	
		nuevaApertura.setCantComensales(cantComensales);
	
		for (MesaBean mesa : mesas) {
			//modifico el estado de las mesas utilizadas
			mesa.setEstado("OCUPADA");
			MesaSrv.getInstancia().modificarMesa(mesa);
		}
		
		nuevaApertura.setMesas(mesas);
		nuevaApertura.setMozo(mozo);
		nuevaApertura.setFecha(new Date());
		nuevaApertura.setEstado("ACTIVA");
		
		//AperturaMesaSrv.getInstancia().guardarAperturaMesa(nuevaApertura);
	}
	/**
	 * 
	 * @param legajo
	 * @return
	 */
	public List<AperturaMesaBean> obtenerAperturasPorMozo(Integer legajo) {
		List<AperturaMesaBean> aperturas = new ArrayList<AperturaMesaBean>();
		aperturas = AperturaMesaSrv.getInstancia().obtenerAperturasPorMozo(legajo);
		
		return aperturas;
	}
	/**
	 * 
	 * @param mesas
	 * @param cantComensales
	 * @return
	 */
	public String[] validarCantidadComensales(ArrayList<MesaBean> mesas, Integer cantComensales) {
		String[] resultado = new String[2];
		Integer capTotal = 0;
		
		for (MesaBean mesa : mesas) {
			if(mesa.getCapacidad() <= cantComensales) {
				//los comenzales entran en una sola mesa.
				resultado[0] = "error"; 
				resultado[1] = "Los comensales entran en una sola mesa (mesa "+ mesa.getIdMesa()+")";
				break;
			} else {
				capTotal = capTotal + mesa.getCapMax();
			}
		}
		if( resultado.length == 0 && capTotal < cantComensales ) {
			//los comenzales no entran en todas las mesas.
			resultado[0] = "error"; 
			resultado[1] = "Los comensales no entran en las mesas seleccionadas.";
		}
		
		if(resultado.length == 0) {
			//no hubo errores
			resultado[0] = "ok";
			resultado[1] ="";
		}
		return resultado;
	}
	
	
}
